home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 101-125 / scopedisk113 / arexx / kvirq.rexx < prev    next >
OS/2 REXX Batch file  |  1995-03-19  |  3KB  |  97 lines

  1. /* chkIRq.rexx - Checks all executablefiles in a directory, including
  2.    subdirectories. for the IRQ virus, using KV from VirusX
  3.                  Ron Shaw Wed Dec  6 18:07:37 1989
  4.  
  5. NOW THIS IS Just the Dirtree.rexx function with added items to
  6. check for the IRQ virus.
  7. execio :  is a executable that uses the PIP: (pipe device)
  8. alarm  :  is a PD program that makes audible sounds, it can be jrbeep,
  9.           addbeep,play8svx (sound)  or anything else you elect to warn you
  10.           that kv found a virus.
  11.  
  12. I find this method of checking for file viruses better the just running Kv
  13. since running Kv on numerous files, you have to keep your eyes on the
  14. screen. With this method you just give it a directory.
  15.  
  16. When the program ends it will give you a count of the number of executable
  17. files it checked for the virus, total files and number of subdirectories
  18.  
  19. To USE :
  20. With Wshell ChkIRq (dir name) <show, or any one character not to show the
  21. file names > without Wshell, Rx, ChkIRq, etc.
  22.  
  23. */
  24.  
  25.  
  26. arg root sil           /* if 2nd arg is anything it will not display
  27.                           file names, only directories */
  28.  
  29. if right(root,1) ~= ':' then
  30.   root = root || '/'
  31. if root = '/' then root = ''
  32.  
  33. /*-- Added this so we could quiet the display of dir and file names --*/
  34. if length(sil) > 0 then sil = 0
  35. else sil = 1
  36. fcount = 0                                            /* # of files */
  37. dcount = 0                                            /* # of directories */
  38.  
  39.  
  40. exec_files = 0   /* added for display of executable files (KV virus checker)  */
  41.  
  42. call dotree(root)
  43. say ' '
  44. say 'sub directories['dcount'] files['fcount']'
  45. say 'KV Checked 'exec_files' executable files '
  46. exit
  47.  
  48. dotree: procedure expose fcount root dcount sil exec_files
  49.   parse arg x
  50.   contents = showdir(x);
  51.   do i = 1 to words(contents)
  52.     temp = x || word(contents,i)
  53.  
  54.     select
  55.       when word(statef(temp),1) = 'FILE' then do
  56.         call do_file temp
  57.         fcount = fcount + 1        /* increment the # of files found */
  58.         end
  59.  
  60.       /* if its a directory then do next level, here is reclusivness! */
  61.       when word(statef(temp),1) = 'DIR' then do
  62.             say temp '(DIR)'
  63.         dcount = dcount +1
  64.         call dotree(temp || '/')
  65.         end
  66.       otherwise signal about_it
  67.     end
  68.   end
  69. return 0
  70.  
  71. do_file:          /* this is where we do what we want with the file */
  72. arg fyl
  73.  
  74. if compare(sil,'1') == 0 then say fyl   /* display file name if asked for */
  75.  
  76. /* lets check the file for IRQ & XENO viruses */
  77. ""'kv 'fyl' | execio from 2 for 1 var str' /* get second line Kv writes
  78.                                                to the screen */
  79. /* check for non-executable file. Could do differently */
  80. if compare(word(str,3),'not') == 0 then return 0
  81.  
  82. if compare(word(str,3),'OK') > 0 then signal abort_page
  83. else exec_files = exec_files +1
  84. return 0
  85.  
  86. abort_page:    /* if we find a virus on the file then jump here */
  87.  
  88. do i = 1 to 3
  89.     say 'Virus Found in ' cur_file
  90. /*    alarm           PD program for sounding off -- here disabled */
  91.     end
  92. exit(20)
  93.  
  94. about_it:    /* error determining file type */
  95. say 'Error: File' temp 'is neither DIR nor FILE.'
  96. exit(20)
  97.